The present disclosure relates generally to information handling systems, and more particularly to a file transfer system for information handling systems in a pre-boot environment.
As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
Prior to booting, information handling systems such as, for example, client devices, may transfer one or more files from server devices in order boot using those files. For example, a client device in a Unified Extensible Firmware Interface (UEFI) pre-boot environment may transfer an operating system (OS) image or firmware update from a server, and subsequently use that OS image to boot, or use that firmware update to update firmware on the client device. Conventionally, the client device and the server device will transfer the OS image using the Transmission Control Protocol (TCP). TCP attempts to provide reliable service to applications by guaranteeing that data that has been transferred remains intact and arrives at the client device in the same order in which it was sent. This is accomplished using TCP features that include the client device rearranging packets according to sequence numbers provided by the server device to ensure ordered data transfer, the client device sending acknowledgements for received packets, and the server device retransmitting missed packets to the client device. Such features raise a number of issues.
For example, packet sequencing by the server device and packet reordering by the client device makes these TCP data transmissions relatively processing heavy. Furthermore, the sending of acknowledgements for received packets and the sending of requests for retransmissions for each missed packet consumes network bandwidth, reducing network throughput as well as overall network performance. Further still, the UEFI pre-boot environment runs in a single threaded mode, which can result in the TCP receive buffer producing a “bottleneck”, as that buffer isn't cleared until all packets have been received and ordered. As such, pre-boot operations that involve file transfer to accomplish OS image deployment, firmware updates, and/or other pre-boot file transfers known in the art may be delayed such that boot times are extended and the performance of the network is degraded.
Accordingly, it would be desirable to provide an improved pre-boot file transfer system.